﻿namespace RndMaterialDisposalService.Models.RequestModel
{
    public class CapitalCompensateElectronFlowReq
    {
        //1.赔偿申请
        public ClaimForCompensationModel claimForCompensation { get; set; } = new ClaimForCompensationModel();
        //1.1分摊责任人确认
        public SharingResponsiblePersonModel sharingResponsiblePerson { get; set; } = new SharingResponsiblePersonModel();
        //2.一级资产管理员审核
        public ApprovedByTheFirstLevelAssetManagerModel approvedByTheFirstLevelAssetManager { get; set; } = new ApprovedByTheFirstLevelAssetManagerModel();
        //3.财务部审核
        public ReviewedByFinanceDepartmentModel reviewedByFinanceDepartment { get; set; } = new ReviewedByFinanceDepartmentModel();
        //4.申请人部门主管审核
        public HeadOfApplicantDepartmentModel headOfApplicantDepartment { get; set; } = new HeadOfApplicantDepartmentModel();
        //5.财务部门主管审核
        public HeadOfFinanceDepartmentModel headOfFinanceDepartment { get; set; } = new HeadOfFinanceDepartmentModel();
        //6.财务部扣款提交
        public DeductionbyFinanceDepartmentModel deductionbyFinanceDepartment { get; set; } = new DeductionbyFinanceDepartmentModel();
        //7.HR部门确认扣款
        public HRDepartmentConfirmationModel hRDepartmentConfirmation { get; set; } = new HRDepartmentConfirmationModel();
        //8.账务报废
        public AccountingRetirementModel accountingRetirement { get; set; } = new AccountingRetirementModel();
        //资产明细
        public List<CompensateForAssetDetails> AssetDetail { get; set; } = new List<CompensateForAssetDetails>();
        //附件
        public List<Attachment> UploadFiles { get; set; } = new List<Attachment>();
    }

    /// <summary>
    /// 1.赔偿申请
    /// </summary>
    public class ClaimForCompensationModel 
    {
        //申请人
        public string? Applicant { get; set; }
        //申请人工号
        public string? ApplicantUserId { get; set; }
        //申请人详细信息
        public List<ChoiceUserInfoModel> ApplicantInfo { get; set; } = new List<ChoiceUserInfoModel>();
        //申请日期
        public DateTime? ApplicantTime { get; set; }
        //申请人中文名称
        public string? ApplicantName { get; set; }
        //电话
        public string? Telephone { get; set; }
        //公司段
        public string? CompanySegment { get; set; }
        //部门（大部门）
        public string? LargeSectors { get; set; }
        //部门（小部门）
        public string? SmallSector { get; set; }
        //部门编码
        public string? DepartmentCode { get; set; }
        //部门主管
        public string? DepartmentHead { get; set; }
        //部门主管工号
        public string? DepartmentHeadUserId { get; set; }
        //部门主管详细信息
        public List<ChoiceUserInfoModel> DepartmentHeadInfo { get; set; } = new List<ChoiceUserInfoModel>();
        //部门一级资产管理员
        public string? FirstLevelAssetManager { get; set; }
        //部门一级资产管理员工号
        public string? FirstLevelAssetManagerUserID { get; set; }
        //部门一级资产管理员详细信息
        public DropDownBoxPickModel FirstLevelAssetManagerInfo { get; set; }
        //需责任人分摊
        public string? Share { get; set; }
        //资产赔偿原因
        public string? ReasonsForAssetCompensation { get; set; }
        //资产赔偿所缺附件说明
        public string? AssetCompensationDescription { get; set; }
        //相关凭据
        public string? RelevantCredentials { get; set; }
        //赔偿资产明细
        public List<CompensateForAssetDetails> AssetDetail { get; set; } = new List<CompensateForAssetDetails>();
        //公司段配置参数
        public string? BookType { get; set; }
        //财务部审核人
        public string? FinanceApproval { get; set; }
        //财务部门主管审核人
        public string? FinanceDepaHeadApproval { get; set; }
        //财务部扣款提交人
        public string? FinanceDeductionApproval { get; set; }
        //HR部门确认扣款人
        public string? HRDepaDeductionApproval { get; set; }
        //账务报废人
        public string? FinanceScrapApproval { get; set; }
    }

    /// <summary>
    /// 1.1分摊责任人确认
    /// </summary>
    public class SharingResponsiblePersonModel
    {
        //意见
        public string? Opinion { get; set; }
        //说明
        public string? Explain { get; set; }
    }

    /// <summary>
    /// 2.一级资产管理员审核
    /// </summary>
    public class ApprovedByTheFirstLevelAssetManagerModel 
    {
        //意见
        public string? Opinion { get; set; }
        //说明
        public string? Explain { get; set; }
    }

    /// <summary>
    /// 3.财务部审核
    /// </summary>
    public class ReviewedByFinanceDepartmentModel 
    {
        //意见
        public string? Opinion { get; set; }
        //说明
        public string? Explain { get; set; }
    }

    /// <summary>
    /// 4.申请人部门主管审核
    /// </summary>
    public class HeadOfApplicantDepartmentModel 
    {
        //意见
        public string? Opinion { get; set; }
        //说明
        public string? Explain { get; set; }
    }

    /// <summary>
    /// 5.财务部门主管审核
    /// </summary>
    public class HeadOfFinanceDepartmentModel 
    {
        //意见
        public string? Opinion { get; set; }
        //说明
        public string? Explain { get; set; }
    }

    /// <summary>
    /// 6.财务部扣款提交
    /// </summary>
    public class DeductionbyFinanceDepartmentModel 
    {
        //意见
        public string? Opinion { get; set; }
        //说明
        public string? Explain { get; set; }
    }

    /// <summary>
    /// 7.HR部门确认扣款
    /// </summary>
    public class HRDepartmentConfirmationModel 
    {
        //意见
        public string? Opinion { get; set; }
        //说明
        public string? Explain { get; set; }
    }

    /// <summary>
    /// 8.账务报废
    /// </summary>
    public class AccountingRetirementModel 
    {
        //意见
        public string? Opinion { get; set; }
        //说明
        public string? Explain { get; set; }
    }

    /// <summary>
    /// 资产明细
    /// </summary>
    public class CompensateForAssetDetails 
    {
        //主键
        public string? Key { get; set; }
        //资产编号
        public string? AssetNo { get; set; }
        //资产名称
        public string? AssetName { get; set; }
        //使用人姓名
        public string? UseName { get; set; }
        //使用人工号
        public string? UseCode { get; set; }
        //部门名称
        public string? DeptName { get; set; }
        //部门代码
        public string? DeptCode { get; set; }
        //启用日期
        public DateTime? StartDate { get; set; }
        //品质状态
        public string? QualityStatus { get; set; }
        //原值
        public double? OriginalValue { get; set; }
        //累计折旧
        public double? AccumulatedDepreciation { get; set; }
        //净值
        public double? NetWorth { get; set; }
        //建议资产赔偿金额
        public string? CompensationAmount { get; set; }
        //资产丢失日期
        public DateTime? AssetLoseDate { get; set; }
    }

    /// <summary>
    /// 查询条件
    /// </summary>
    public class CapitalCompensateReportConditionModel
    {
        public string? ApplicationNumber { get; set; }
        public string? ApplicantTime { get; set; }
        public string? Applicant { get; set; }
        public string? CurrentStatus { get; set; }
        public string? ApplicantEmployeeNumber { get; set; }
        public string? CompanySegment { get; set; }
        public string? DepartmentName { get; set; }
        public string? AssetNo { get; set; }
        public string? CurrentUser { get; set; }
        public int pageIndex { get; set; }
        public int pageSize { get; set; }
    }

    public class CapitalCompensateReportDataModel 
    {
        public string? ProcessFolio { get; set; }
        public string? ProcInstId { get; set; }
        public string? Applicant { get; set; }
        public string? ApplicantTime { get; set; }
        public string? ApplicantName { get; set; }
        public string? Telephone { get; set; }
        public string? CompanySegment { get; set; }
        public string? LargeSectors { get; set; }
        public string? SmallSector { get; set; }
        public string? DepartmentCode { get; set; }
        public string? DepartmentHead { get; set; }
        public string? DepartmentHeadUserId { get; set; }
        public string? FirstLevelAssetManager { get; set; }
        public string? FirstLevelAssetManagerUserID { get; set; }
        public string? Share { get; set; }
        public string? ShareUserId { get; set; }
        public string? ShareName { get; set; }
        public string? ReasonsForAssetCompensation { get;set;}
        public string? AssetCompensationDescription { get; set; }
        public string? RelevantCredentials { get; set; }
        //赔偿资产明细
        public List<CompensateForAssetDetails> AssetDetail { get; set; } = new List<CompensateForAssetDetails>();
    }
}
